package com.woniuxy.mapper;

import com.woniuxy.entity.Stu;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 作者
 * @create 2025-08-12 11:19
 *MyBatisDao接口后缀名一般使用Mapper
 */
public interface StuMapper {
    //一个参数：对象,映射文件的引用值#{属性名}
    void insert(Stu stu);
    //一个参数：对象,添加了注解 ,映射文件的引用值#{注解的名.属性名}
    void insert01(@Param("stu") Stu stu);
    void update(Stu stu);
    void deleteBySid(int sid);
    //一个参数：基本数据类和String,映射文件的引用值名字任意
    Stu selectBySid(int sid);
    //一个参数：基本数据类和String,添加了注解，必须相同
    Stu selectBySid01(@Param("sid") int sid);
    List<Stu> selectAll();
    List<Stu> selectBySname(String sname);
    //多个参数，一定要加@Param注解
    List<Stu> selectBySnameAndAge(@Param("sname") String sname,
                                  @Param("age") int age);
    List<Stu> selectBySnameAndAge01(@Param("stu") Stu stu,
                                    @Param("age") int age);

    List<Stu> selectByCondition(Stu stu);
    List<Stu> selectByCondition01(Stu stu);
    List<Stu> selectByCondition02(@Param("stu") Stu stu ,@Param("age") int age);
    List<Stu> selectByCondition03(Stu stu);

    //select * from stu where sid in(1,3,5)
    List<Stu> selectBySids(int[] sids);
    List<Stu> selectBySids01(@Param("sids") int[] sids);
    List<Stu> selectBySids02(List<Integer> sids);
    List<Stu> selectBySids03(List<Stu> stus);


    void insertBatch(List<Stu> stus);


    //满足条件的数据的总条数
    //select count(*) from where #{stu.sname} and #{stu.age} and ?
    int	selectConditionPageCount(@Param("stu") Stu stu);

    //显示当前页的数据
    //select * from where ? and ? and ? limit ?,?
    List<Stu> selectConditionPage(@Param("stu")Stu stu,
                                  @Param("pageIndex") int pageIndex,
                                  @Param("pageSize") int pageSize);


    List<Stu> selectConditionPagePlugin(@Param("stu")Stu stu);

}
